// utils/router.js
import { Local } from '@/utils/storage';
interface Options {
	url: string;
	type?: string;
}
/**
 * 封装 route
 * @param options 路由参数
 * @param needLogin 是否需要登录才能访问
 */
async function push(options: Options, needLogin: boolean = false) {
	const url = options.url;

	if (!beforeEach(url, needLogin)) {
		// 未登录但需要登录，跳转登录页
		return uni.navigateTo({
			url: '/pages/login/index',
		});
	}

	// 登录状态 or 不需要登录，正常跳转
	switch (options.type) {
		case 'switchTab':
			uni.switchTab({ url });
			break;
		case 'reLaunch':
			uni.reLaunch({ url });
			break;
		case 'redirectTo':
			uni.redirectTo({ url });
			break;
		default:
			uni.navigateTo({ url });
	}
}
// 自定义路由守卫函数
function beforeEach(url: string, needLogin: boolean): boolean {
	const token = Local.getToken();
	if (url === '/pages/login/index') {
		return true;
	}
	if (needLogin && !token) {
		Local.set('redirectUrl', url); // 登录后用
		return false;
	}
	return true;
}
export default {
	push,
};
